#ifndef OBJECT3D_H_
#define OBJECT3D_H_

#include "Header.h"
#include "Material.h"
#include "Matrix.h"
#include "Vector3.h"

class ObjectManager;
class GraphicsManager;

class Object3D
{
public:
	Vector3 position;  // vi tri cua model
	Vector3 rotation;  // goc quay cua model lan luot voi truc Ox, Oy, Oz
	Vector3 scale;     // ti le phongs lon cua model theo cac truc Ox, Oy, Oz
	Matrix transformMatrix; //ma tran dung de tinh toan lai tren model theo position, rotation, scale
	bool castShadow;
	bool receiveShadow;
	bool isDisplayed;
	bool isSolid;
	int effectId;
	Material material;

	Object3D();
	virtual ~Object3D();

	virtual Matrix* GetTransform(char arryOption[3]);
	virtual void ApplyEffect(ObjectManager* objectManager, GraphicsManager *graphics) ABSTRACT;
	virtual void Render(ObjectManager* objectManager, GraphicsManager *graphics, Matrix* viewProjection, Matrix* lightVP, bool useEffect = true) ABSTRACT;
};

#endif
